#ifndef PIZZAINGREDIENTFACTORY_HPP
#define PIZZAINGREDIENTFACTORY_HPP

#include <iostream>

class Dough;
class Sauce;
class ThickCrusDough;
class PlumTomatoSauce;

// 原料工厂(为了保证顾客的高质饮食，老板自己开工厂提供原料)
class IngredientFactory
{
protected:
public:
  IngredientFactory()
  {
  }

  virtual std::string CreateDough() = 0;
  virtual std::string CreateSauce() = 0;
  std::string CreateVeggies() {}
  std::string CreateCheese() {}
  std::string CreateClam() {}

  ~IngredientFactory()
  {
  }
};

class NYIngredientFactory : public IngredientFactory
{
private:
public:
  NYIngredientFactory()
      : IngredientFactory()
  {
  }

  std::string CreateDough()
  {
    // 厚面团
    std::string dough = "ThickDough";
    return dough;
  }

  std::string CreateSauce()
  {
    //_plumTomatoSauce = CreatePlumTomatoSauce()
    // return sauce;
    std::string sauce = "PlumTomatoSauce";
    return sauce;
  }

  std::string CreateClam()
  {
    //_plumTomatoSauce = CreatePlumTomatoSauce()
    // return sauce;
    std::string clam = "FreshClam";
    return clam;
  }

  std::string CreateVeggies()
  {
    std::string veggies = "tomato、cabbage、spinach";
    return veggies;
  }

  std::string CreateCheese()
  {
    std::string cheese = "ReggianoCheese"; // MozzarellaCheese
    return cheese;
  }
};

// // 原料
// class Ingredient
// {
//   protected:
//   public:
// };

// // 酱汁
// class Sauce :public Ingredient
// {
//   protected:
//   public:
// };

// class PlumTomatoSauce :public Sauce
// {
//   typedef PlumTomatoSauce self;
// protected:
//   self* _plumTomatoSauce;
// public:
//   PlumTomatoSauce()
//     :_plumTomatoSauce(new PlumTomatoSauce())
//   {}

//   self CreatePlumTomatoSauce()
//   {
//     return *this;
//   }

//   ~PlumTomatoSauce()
//   {}
// };

// // 干酪、奶酪
// class Cheese :public Ingredient
// {
//   protected:
//   public:
// };

// // 面团
// class Dough :public Ingredient
// {
//   protected:
//   public:
// };

// class ThickCrusDough :public Dough
// {
// private:
// public:

// };

// class ThinCrusDough :public Dough
// {
// private:
// public:

// };

// // 蔬菜
// class Veggies :public Ingredient
// {
//   protected:
//   public:
// };

// // 意大利辣肉肠
// class Pepperoni :public Ingredient
// {
//   protected:
//   public:
// };

// // 蛤蜊
// class Clam :public Ingredient
// {
//   protected:
//   public:
// };

#endif